<template>
  <view class="cart">
    <!-- 1 列表 -->
    <view class="cart-list">
      <view class="cart-item" v-for="(item,index) in cartList" :key="item.goods_id">
        <!-- 1 复选框 -->
        <view class="goods-chk">
          <u-checkbox
            :value="item.checked"
            shape="circle"
            active-color="red"
            @change="handleChecked(index)"
          ></u-checkbox>
        </view>
        <!-- 2 图片 -->
        <view class="goods-img">
          <u-image
            width="191rpx"
            height="191rpx"
            :src="item.goods_small_logo"
          ></u-image>
        </view>
        <!-- 3 信息 -->
        <view class="goods-info">
          <!-- 名称 -->
          <view class="goods-name u-line-2">{{item.goods_name}}</view>
          <!-- 价格和数量 -->
          <view class="goods-price-num">
            <view class="goods-price">￥{{item.goods_price}}</view>
            <view class="goods-num-tool">
              <view class="num-btn" @click="handleNumUpdate(-1,index)">-</view>
              <view class="goods-vnum">{{item.num}}</view>
              <view class="num-btn" @click="handleNumUpdate(1,index)">+</view>
            </view>
          </view>
        </view>
      </view>

    </view>
    <!-- 2 统计 -->
    <view class="statistics">
      <view class="all-chk">
        <u-checkbox
          :value="checkAll"
          shape="circle"
          active-color="red"
          @change="handleCheckedAll"   
        >全选</u-checkbox>
      </view>
      <view class="all-price">
        合计: <text>￥{{checkPrice}}</text>
      </view>
      <view class="all-count">
        <u-button
          type="error"
          shape="circle"
          @click="handleToPay"
        >去结算({{checkCount}})</u-button>
      </view>
    </view>
  </view>
</template>

<script>
import {mapMutations,mapState} from 'vuex'
export default {
  data(){
    return {
    }
  },
  computed:{
    ...mapState({
      cartList:(state)=>state.cart.cartList
    }),
    checkAll(){
      return this.cartList.length && this.cartList.every(item=>item.checked)
    },
    checkCount(){
      let sum=0
      this.cartList.forEach(item=>{
        if(item.checked){
          sum +=item.num
        }
      })
      return sum
    },
    checkPrice(){
      let price=0
      this.cartList.forEach(item=>{
        if(item.checked){
          price +=item.num*item.goods_price
        }
      })
      return price
    }
  },
  methods:{
    ...mapMutations(['cart/cartCheck','cart/cartCheckAll','cart/cartNumEdit','cart/cartRemove']),
    // 点击单个勾选
    handleChecked(index){
      // console.log(index);
      this['cart/cartCheck']({index})
    },
    handleCheckedAll(){
      // console.log(1);
      // 1.获取全选状态 取反
      const checkAll = !this.checkAll
      // 2.将全选状态传过去修改
      this['cart/cartCheckAll']({checked:checkAll})
    },
     // 点击数量编辑按钮 - || +
    async handleNumUpdate(unit, index) {
      // 判断用户是否想要删除  当前的数量 和 点击 “-”
      console.log(this.cartList);
      if (this.cartList[index].num === 1 && unit === -1) {
        // 弹出 确认框 是否想要删除
        const [err, result] = await uni.showModal({
          title: "提示",
          content: "您是否想要删除",
          showCancel: true,
          cancelText: "取消",
          cancelColor: "#000000",
          confirmText: "确定",
          confirmColor: "#3CC51F",
        });
        if (result.confirm) {
          // 想要删除
          // console.log("想要删除");
          this["cart/cartRemove"]({ index });
        } else {
          // console.log("什么都不做");
        }
      } else {
        this["cart/cartNumEdit"]({ unit, index });
      }
    },
    // 跳转支付页面
    handleToPay(){
      if(this.checkCount===0){
        uni.showToast({
          title: '你没有购买商品',
          icon: 'none',
        });
        return;
      }else{
        console.log("跳转页面");
        this.$u.route({
          url:'/pages/pay/pay'
        });
      }    
    }
  },
  }

</script>

<style lang="scss">
.cart {
  padding-bottom: 111rpx;
  .cart-list {
    .cart-item {
      display: flex;
      padding: 10rpx;
      border-bottom: 1rpx solid #ccc;
      .goods-chk {
        flex: 1;
        display: flex;
        align-items: center;
        justify-content: center;
      }

      .goods-img {
        flex: 2;

        display: flex;
        align-items: center;
        justify-content: center;
      }

      .goods-info {
        color: #666;
        flex: 3;
        display: flex;
        flex-direction: column;
        justify-content: space-around;
        .goods-name {
        }

        .goods-price-num {
          display: flex;
          justify-content: space-between;
          .goods-price {
            color: $themeColor;
          }

          .goods-num-tool {
            width: 140rpx;
            height: 40rpx;

            display: flex;
            justify-content: space-between;
            .num-btn {
              border: 1rpx solid #ccc;
              border-radius: 50%;
              width: 40rpx;
              height: 40rpx;
              text-align: center;
              line-height: 40rpx;
            }

            .goods-vnum {
            }
          }
        }
      }
    }
  }
  .statistics {
    position: fixed;
    background-color: #fff;
    bottom: 0;
    left: 0;
    width: 100%;
    z-index: 100;
    border-top: 1rpx solid #ccc;
    display: flex;
    align-items: center;
    padding: 15rpx;
    .all-chk {
    }

    .all-price {
      flex: 1;
      color: #666;
      text {
        color: $themeColor;
      }
    }

    .all-count {
    }
  }
}
</style>